//
//  NSDate+Extension.swift
//  WXWeiBo
//
//  Created by Angel-xin on 2016/09/26.
//  Copyright © 2016年 Angel-xin. All rights reserved.
//

import Foundation

extension NSDate
{
    /**
     将时间字符串转换为NSDate
     */
    class func dateWithStr(time: String) -> String
    {
        // 1.创建formatter
        let formatter = DateFormatter()
        
        // 2.设置时间的格式
        formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
        
        // 3. 设置时间的区域(真机必须设置，否则可能不会转换成功)
        formatter.locale = NSLocale(localeIdentifier: "en") as Locale!
        
        // 4.转换(转换好的时间是去除时区的时间)
        let createdDate = formatter.date(from: time)!
        
        // 获取当前时间
        let calendar = NSCalendar.current
        if isThisYear(date: createdDate as NSDate) {
            // 如果是今年
            if calendar.isDateInToday(createdDate) {
                //如果是今天
                let interval:Int = abs(Int(createdDate.timeIntervalSinceNow))
                if interval < 60{
                    return "刚刚"
                } else if interval < 60 * 60{
                    return "\(interval/60)分钟前"
                } else if interval < 60 * 60 * 24{
                    return "\(interval/60/24)小时前"
                }
            }else if calendar.isDateInYesterday(createdDate){
                formatter.dateFormat = "HH:mm"
                // 不是今天
                return "昨天 \(formatter.string(from: createdDate))"
            } else{
                // 今年的某一天
                formatter.dateFormat = "MM:dd HH:mm"
                return formatter.string(from: createdDate)
            }
        } else{
            // 如果不是今年
            formatter.dateFormat = "yyyy-MM-dd HH:mm"
            return formatter.string(from: createdDate)
        }
        return formatter.string(from: createdDate)
    }
}

func isThisYear(date: NSDate) -> Bool {
    // 1.创建formatter
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy"
    //1.获取当前年份字符串
    let currentYearStr = formatter.string(from: NSDate() as Date)
    //2.获取微博年份字符串
    let statusYearStr = formatter.string(from: date as Date)
    return currentYearStr == statusYearStr
}


